/*
  注册和登录路由模块
*/
const path = require('path')
const db = require(path.join(__dirname, '../common/db.js'))
const express = require('express')
const utility = require('utility')
const jwt = require('jsonwebtoken')
// 创建一个路由对象，可以监听路由的路径
const router = express.Router()

// 注册
router.post('/reguser', async (req, res) => {
  // 1、获取前端传递的参数
  let params = req.body
  // 对原始的密码数据进行加密
  params.password = utility.md5(params.password)
  
  // 判断数据库中是否已经存在该用户
  let csql = 'select id from user where username = ?'
  let flag = await db.operateDb(csql, params.username)
  if (flag.length > 0) {
    // 已经存在该用户，提示客户端，终止后续代码运行
    res.json({
      status: 1,
      message: '用户名已经存在，请更换重试！'
    })
    return 
  }

  // 2、把参数信息插入数据库
  // sql = 'insert into (username, password) values ("tom", "tom")'
  let sql = 'insert into user set ?'
  let ret = await db.operateDb(sql, params)
  // let ret = await db.operateDb(sql, {username: params.username, password: params.password})
  // 3、响应客户端状态
  if (ret.affectedRows > 0) {
    res.json({
      status: 0,
      message: '注册成功'
    })
  } else {
    res.json({
      status: 1,
      message: '注册失败'
    })
  }
})

// 登录
router.post('/login', async (req, res) => {
  // 1、获取客户端表单数据
  let params = req.body
  params.password = utility.md5(params.password)
  // 2、查询数据库判断是否有这个用户
  let sql = 'select id from user where username = ? and password = ?'
  let ret = await db.operateDb(sql, [params.username, params.password])
  // 3、根据查询结果返回状态
  if (ret.length > 0) {
    // 登录成功后，生成该用户对应的token，然后返回
    // 参数一：表示存入token中的用户相关信息
    // 参数二：表示token的加密字符串(很重要，不可以泄漏)
    // 参数三：表示token的相关配置信息(可以配置token的有效期)
    let token = jwt.sign({id: ret[0].id}, 'bigevent', {expiresIn: '2 days'})
    res.json({
      status: 0,
      message: '登录成功',
      token: 'Bearer ' + token
    })
  } else {
    res.json({
      status: 1,
      message: '登录失败'
    })
  }
})

router.get('/data', async (req, res) => {
  let sql = 'select * from myuser where id = ?'
  let ret = await db.operateDb(sql, req.query.id)
  if (ret.length > 0) {
    res.json({
      status: 0,
      message: '查询用户列表成功',
      data: ret
    })
  } else {
    res.json({
      status: 1,
      message: '查询用户列表失败'
    })
  }
})

module.exports = router
// 不能用如下方式的写法
// module.exports.router = router
